iT邦幫忙

2021 iThome 鐵人賽

DAY 14
1
Software Development

透過迷霧,看破一切~~ZOOPARTY 動物園派對桌遊設計系列 第 14

[第十四隻羊] 迷霧森林舞會VII 開完房間後走進房間

  • 分享至 

  • xImage
  •  

天亮了 昨晚是平安夜

關於迷霧森林故事

焦慮抑制劑

4號:我跟全場站不同邊耶,我站7耶,我跟7號玩家共事過幾個月,應該是不常玩所以不知道這樣跳會被懷疑,因為他就覺得我很緊張,我是預言家沒有先講,就會被大家懷疑,可能很久沒玩會犯這個錯誤,加上他跳成這副德性,9號吃相很難看啊,天啊我對手太爛了這樣,這是9號非常基本款的招數,對9號來說信手捻來,後面的來講到7號的時候他一副就是我沒有想要理你們了認不到妳們家的事情,他不是尷尬也不是玩累了,就是覺得好無聊喔這個遊戲的這種感覺XD,聽到他的OS,我覺得5跟8聽得懂我在講什麼,因為他們兩位很猶豫,我不知道有沒有get錯,加上一面倒,所以我很站7邊,尤其全部人都在扛推6,我覺得很奇怪,所以我站7邊,9很明顯是狼王,1號金水我就吞不下去了,因為7號跳這麼爛,你不用發個金水拉票,所以我就覺得你在做隊友身份,你可能做給狼隊身份,我覺得2是好的但是3超級打2,因為2是唯一一張有猶豫到底7是不是真預言家的玩家,所以我覺得2有講到有講到這個東西篇好,現在全部風向已經是信9推7了,那幹嘛突然演一波,然後3打的坑是2 6 7 8,他也是有推6,跟9的口徑是一致的,因為9也有推2也有推6,跟9的口徑很一致,9也有推3跟6,所以3跟9坑太像了所以3也入我坑,所以我的坑現在有1 9 3,如果再抓一個我可能會抓8容錯,因為9有跟8對話,握會覺得跟9有對到話的人都偏向在做身份,因為他就覺得7號跳那麼爛了這場我一定穩跳贏,所以我現在對話的人全部都在幫你做身份,我的感覺,而且我現在也沒辦法歸一個外置位我也只能7 9,7 9投,如果真的衰到
7出去沒有啟動技能女巫請直接把9毒掉,我是想投9,9如果是狼王我就讓他帶這也沒有辦法,我有跳沒跳都沒差,我是騎士,如果撞到狼槍我就是兩神換一狼,沒辦法就只能這樣,如果我真的厲害應該是要從外置位歸到一狼,但我不敢,我真的不敢歸到外置位,所以我就直接讓局勢明顯一點,說不定我如果撞9結果9是好人那我不就..沒關係騎士選擇撞9

洛神:騎士發動技能撞9,9號不是狼人,4號玩家出局,接下來進行第一輪放逐投票
投7:1 2 3 5 6 8 9 10
投9:7
7號玩家出局,啟動角色技能,你要帶走的對象是?
7號:槍殺9號玩家
洛神:9號玩家出局,請至淘汰區
7號:跟我的狼隊友們說什麼好呢?我覺得5 6有身份
洛神:天黑請閉眼

待續..

動物園派對

有了登入系統之後我們就可以把current user加入房間
我們先到座位的model加幾個我們會常常呼叫的方法
我們會常需要看座位是不是有空位,是不是已有玩家入座
所以先把空位跟非空位都先寫在 Seat.rb的 model 之中

/app/models/seat.rb

class Seat < ApplicationRecord
  belongs_to :room

  def self.empty_seat_collection(room)
    empty_seat_ids = []
    room.seats.each do |seat|
      if seat.user_id.blank?
        empty_seat_ids << seat
      end
    end
    empty_seat_ids
  end

  def self.occupied_seat_collection(room)
    occupied_seat_ids = []
    room.seats.each do |seat|
      if seat.user_id.present?
        occupied_seat_ids << seat
      end
    end
    occupied_seat_ids
  end
end

接下來先把創建房間的玩家指定為室長
這邊我們會用到這個 rolify gem
rolify 裝完之後用法很簡單 只要指定角色給該位使用者就可以了
再來我們重新回到之前做好的建立房間
重新寫一個方法叫做指定室長assign_seat_to_mayor(@room)

/app/controllers/rooms_controller.rb

  def create
    @room = Room.new(room_params)
    if @room.validate(room_params)
      @room.board = Room.boards[room_params[:board]]
      @room.save
      if @room.seats.count == 0
        create_seats(@room.id, @room.number_of_gamer)
        assign_seat_to_mayor(@room)
        redirect_to room_path(@room), notice: '房間建立成功'
      else
        redirect_to new_room_path, notice: '發生錯誤 請重新建立房間'
      end
    else
      render :new
    end
  end

接下來就可以指定創建房間的人為室長
指定的語法是

current_user.add_role :mayor

同時當使用者離開房間的時候我們要更新座位、移除原本的室長,
當房間還有人的時候,重新任意指定新室長
離開房間的人,我們還必須清除他的座位,並移除使用者本身正在遊戲的房間id

/app/controllers/rooms_controller.rb

  def assign_seat_to_mayor(room)
    empty_seats = Seat.empty_seat_collection(room)
    if empty_seats.count > 0
      seat = empty_seats.sample
      seat.update(user_id: current_user.id)
      current_user.update(room_id: current_user.id)
      current_user.add_role :mayor
    end
  end

  def purify_user_before_left_room(room)
    occupied_seats = Seat.occupied_seat_collection(room)

    # clear user rolify in the room and re-assign mayor role
    clear_the_seat = occupied_seats.select{|s| s.user_id = current_user.id}
    clear_the_seat.update(user_id: nil)
    current_user.update(room_id: nil)
    current_user.remove_role :mayor if current_user.has_role? :mayor
    # clear seat from occupied to empty

    if empty_seats <= 0
      # hide the empty room
    else
      # assign new mayor
      seat = occupied_seats.sample
      new_mayor = User.find(seat.id)
      new_mayor.add_role :mayor
    end
  end

這麼一來我們就完成室長建立房間、坐下座位,以及座位指定玩家的這些功能囉

阿虎每日選幣

我們今天來看比特,沒跌破 $41688 其他就隨意,詳細一點說,大跌在即請有買的看倌多多小心,$41688只是單獨指短期不跌破可以看看其他標的,但要小心誘多,修正大回調在 $43000沒守住時就已經底定,$36000 沒守住應該會跌破 $30000

天黑請閉眼


上一篇
[第十三隻羊] 迷霧森林舞會VI devise登入
下一篇
[第十五隻羊] 迷霧森林舞會IX 玩家加入房間
系列文
透過迷霧,看破一切~~ZOOPARTY 動物園派對桌遊設計30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言